package sf.jooq;

import org.jooq.Field;
import org.jooq.SelectConditionStep;
import org.jooq.SelectQuery;
import org.jooq.Table;
import org.jooq.TableField;
import sf.jooq.tables.JooqTable;

import java.util.List;
import java.util.Map;
import java.util.Objects;

public class JooqImpl2 {

//    private Class<?> selectQueryReturnClass(SelectConditionStep select, List<Field<?>> fields) {
//        Class<?> beanClass = Map.class;
//        SelectQuery query = select.getQuery();
//        List<? extends Table<?>> fromTables = JooqVisitor2.getSelectFromTableList(query);
//        if (!fields.isEmpty()) {
//            //是否相同
//            boolean same = true;
//            TableField f = (TableField) fields.get(0);
//            Table table = f.getTable();
//            for (Field tf : fields) {
//                TableField temp = (TableField) tf;
//                if (!Objects.equals(f.getTable(), temp.getTable())) {
//                    same = false;
//                    break;
//                }
//            }
//            if (same) {
//                if (fields.size() == 1) {
//                    //单一值返回
//                    beanClass = Object.class;
//                } else {
//                    if (JooqTable.class.isAssignableFrom(table.getClass())) {
//                        beanClass = ((JooqTable) table).getClz();
//                    }
//                }
//            }
//        } else if (fromTables.size() == 1) {
//            Table table = fromTables.get(0);
//            if (JooqTable.class.isAssignableFrom(table.getClass())) {
//                beanClass = ((JooqTable) table).getClz();
//            }
//        }
//        return beanClass;
//    }
}